/*
    SUSAN® - Sole of Unix Save ANything

   
   Copyright (C) 2013-2014 Skyatlas Co. CN

   

   

   
*/
/*
 * Windows Tape API device abstraction.
 *
 * Marco van Wieringen, December 2013
 */

#ifndef BAREOS_WIN32_STORED_BACKENDS_WIN32_TAPE_DEVICE_H_
#define BAREOS_WIN32_STORED_BACKENDS_WIN32_TAPE_DEVICE_H_

namespace storagedaemon {

class win32_tape_device : public generic_tape_device {
 public:
  win32_tape_device();
  ~win32_tape_device();

  int d_close(int) override;
  int d_open(const char* pathname, int flags, int mode) override;
  int d_ioctl(int fd, ioctl_req_t request, char* mt = NULL) override;
  ssize_t d_read(int fd, void* buffer, size_t count) override;
  ssize_t d_write(int fd, const void* buffer, size_t count) override;
  int TapeOp(struct mtop* mt_com);
  int TapeGet(struct mtget* mt_com);
  int TapePos(struct mtpos* mt_com);
};

} /* namespace storagedaemon */
#endif /* BAREOS_WIN32_STORED_BACKENDS_WIN32_TAPE_DEVICE_H_ */
